﻿// test_11.2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//int Fiber(int x)
//{
//	if (x <= 2)
//	{
//		return 1;
//	}
//	else
//	{
//		return Fiber(x - 1) + Fiber(x - 2);
//	
//	}
//	x--;
//
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int ret = Fiber(n);
//	printf("%d", ret);
//}
// 斐波那契数的递归版本



//#include<stdio.h>
//int main()
//{
//	int n;
//	int m = 1;
//	int a = 1;
//	int b, c, d;
//	scanf("%d", &n);
//	if (n <= 2)
//	{
//		printf("%d",m);
//	}
//	else
//	{
//		for (int i = 3;i <= n;i++)
//		{
//			b = m + a;
//			a = m;
//			m = b;
//		}
//		printf("%d", b);
//	}
//}
// 斐波那契数的循环赋值版本



//#include<stdio.h>
//void reverse_string(char* p)
//{
//	if (*p != '\0')
//	{
//		reverse_string(p + 1);
//		printf("%c", *p);
//	}
//}
//int main()
//{
//	char arr[20]={'0'};
//	printf("请输入字符串\n");
//	scanf("%s", arr);
//	reverse_string(arr);
//
//}
// 字符串倒序打印递归版本



//#include<stdio.h>
//int mult(int x)
//{
//	if (x >= 1)
//	{
//		int n = x * mult(x - 1);
//		return n;
//	}
//	else
//		return 1;
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int ret=mult(n);
//	printf("%d", ret);
//}
//阶乘的递归版本




#include<stdio.h>
int main()
{
	int n;
	int m = 1;
	scanf("%d", &n);
	for (int i = 1;i <= n;i++)
	{
		m *= i;
	}
		printf("%d", m);
	
}
//阶乘的循环版本
